/*
 * @Author: Mcc
 * @Date: 2024-07-09 10:51:37
 * @LastEditors: mcc 550539422@qq.com
 * @LastEditTime: 2024-07-09 11:10:23
 * @FilePath: \newsAnt\vite-project\vite.config.ts
 * @Description:
 *
 * Copyright (c) 2024 by Mcc, All Rights Reserved.
 */
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import AutoImport from 'unplugin-auto-import/vite';
import Components from 'unplugin-vue-components/vite'; // 按需组件自动导入
import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers';
import postcsspxtoviewport from 'postcss-px-to-viewport';
// *********************************** 路径配置新增 start
import { fileRename } from 'vite-plugin-file-rename';
import { resolve } from 'path';
var pathResolve = function (dir) {
  return resolve(__dirname, '.', dir);
};
var alias = {
  '@': pathResolve('src'),
};
// https://vitejs.dev/config/
export default defineConfig({
  build: {
    rollupOptions: {
      output: {
        entryFileNames: 'index.html', // 修改生成的文件名
      },
    },
    outDir: 'dist', // 输出目录
  },
  plugins: [
    fileRename({
      fileMap: {
        'index.html': 'index.html',
      },
    }),
    vue(),
    Components({
      dts: true, //生成components.d.ts 全局定义文件
      resolvers: [
        AntDesignVueResolver({
          //对使用到的全局ant design vue组件进行类型导入
          importStyle: false, // 不动态引入css,这个不强求
        }),
      ],
      include: [/\.vue$/, /\.vue\?vue/, /\.md$/, /\.tsx$/], //包含的文件类型
    }),
    AutoImport({
      // targets to transform
      include: [/\.[tj]sx ? $ /, /\.vue$/, /\.vue\?vue/, /\.md$/],
      imports: ['vue', 'vue-router', 'pinia'],
      eslintrc: {
        enabled: false, // Default `false`
        filepath: './.eslintrc-auto-import.json', // Default `./.eslintrc-auto-import.json`
        globalsPropValue: true, // Default `true`, (true | false | 'readonly' | 'readable' | 'writable' | 'writeable')
      },
      dts: './auto-imports.d.ts',
    }),
  ],
  css: {
    postcss: {
      plugins: [
        // postcsspxtoviewport({
        //   unitToConvert: 'px', // 要转化的单位
        //   viewportWidth: 1920, // UI设计稿的宽度
        //   unitPrecision: 6, // 转换后的精度，即小数点位数
        //   propList: ['*'], // 指定转换的css属性的单位，*代表全部css属性的单位都进行转换
        //   viewportUnit: 'vw', // 指定需要转换成的视窗单位，默认vw
        //   fontViewportUnit: 'vw', // 指定字体需要转换成的视窗单位，默认vw
        //   selectorBlackList: ['ignore-'], // 指定不转换为视窗单位的类名，
        //   minPixelValue: 1, // 默认值1，小于或等于1px则不进行转换
        //   mediaQuery: false, // 是否在媒体查询的css代码中也进行转换，默认false
        //   replace: false, // 是否转换后直接更换属性值
        //   landscape: false, // 是否处理横屏情况
        // }),
      ],
    },
  },
  base: './',
  build: {
    target: 'esnext',
    rollupOptions: {
      external: /\.skel$/,
    },
    assetsDir: 'assest',
  },
  resolve: {
    // ****************** 路径配置新增
    alias: alias,
  }, // ****************** 路径配置新增
  server: {
    port: 8080,
  },
});
